package com.kingyea.mobilepolice.role.service;

import com.kingyea.mobilepolice.orgrole.bean.OrgRoleCondition;
import com.kingyea.mobilepolice.orgrole.bean.OrgRolePo;
import com.kingyea.mobilepolice.role.bean.Role;
import com.kingyea.mobilepolice.role.bean.RoleCondition;
import com.kingyea.mobilepolice.role.bean.RolePo;

import java.util.List;

/**
 * @author Mr.Lin
 * @version v1.0.0
 * @description Role 接口
 * @date Created in 2018-03-30 11:36:12
 */
public interface RoleService {

    /**
     * 通过ID查找对象
     *
     * @param id
     * @return
     */
    Role getById(Integer id);

    /**
     * @Description: 根据名称查询，名称不能重复
     * @Param: [roleName]
     * @return: com.kingyea.mobilepolice.role.bean.Role
     * @Author: cxc
     * @Date: 2018.04.12 12:51
     */
    Role getByName(String roleName);

    /**
     * 列表
     *
     * @param condition
     * @return
     */
    List<Role> search(RoleCondition condition);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    boolean deleteById(Integer id) throws Exception;

    /**
     * @Description: 添加角色并把角色依赖当前登录人（创建人）
     * @Param: [role]
     * @return: boolean
     * @Author: cxc
     * @Date: 2018.04.13 10:10
     */
    boolean save(Role role) throws Exception;

    /**
     * 更新
     *
     * @param role
     * @return
     */
    boolean update(Role role) throws Exception;

    /**
     * @Description: 查询用户所有的角色
     * @Param: [userId]
     * @return: java.util.List<com.kingyea.mobilepolice.role.bean.Role>
     * @Author: cxc
     * @Date: 2018.04.04 16:04
     */
    List<Role> searchByUserId(String userId);

    /**
     * @Description: 删除依赖用户的角色
     * @Param: [po]
     * @return: boolean
     * @Author: cxc
     * @Date: 2018.04.04 18:45
     */
    Boolean delRolesForUserId(RolePo po);

    /**
     * @Description: 为用户添加角色依赖
     * @Param: [po]
     * @return: com.kingyea.mobilepolice.role.bean.Role
     * @Author: cxc
     * @Date: 2018.04.04 18:47
     */
    Boolean addRolesForUserId(RolePo po);

    /**
     * @Description: 删除部门对角色的依赖
     * @Param: [po]
     * @return: java.lang.Boolean
     * @Author: cxc
     * @Date: 2018.04.27 09:27
     */
    Boolean updateForOrg(OrgRolePo po);

    /**
     * @Description: 部门依赖的角色
     * @Param: [condition]
     * @return: java.util.List<com.kingyea.mobilepolice.role.bean.Role>
     * @Author: cxc
     * @Date: 2018.04.27 09:16
     */
    List<Role> searchByOrgSerialNo(OrgRoleCondition condition);
}
